home *** CD-ROM | disk | FTP | other *** search
/ Ian & Stuart's Australian Mac 1993 September / September 93.iso / Archives / Games / Strategy / Puzzle / GameMaster / GM Dev Kit / Rulebook Sources / Chess / ChessSubs.p < prev    next >
Encoding:
Text File  |  1991-10-05  |  2.4 KB  |  116 lines  |  [TEXT/PJMM]

  1. unit ChessSubs;
  2.  
  3. { ©1991 Quinn "The Eskimo" }
  4.  
  5. interface
  6.  
  7.     uses
  8.         Failure, {}
  9.         ChessTypes;
  10.  
  11.     function Opposite (p: playerType): playerType;
  12.     function BaseRow (p: playerType): boardYNdx;
  13.     function PawnBaseRow (p: playerType): boardYNdx;
  14.     function Pawn_dy (p: playerType): integer;
  15.     function PieceToPlayer (p: pieceType): playerType;
  16.     function PieceInMyTeam (player: playerType; p: pieceType): boolean;
  17.     function PlayerToKing (p: playerType): pieceType;
  18.     function PlayerPiece (p: playerType; piece: pieceType): pieceType;
  19.  
  20. implementation
  21.  
  22.     function Opposite (p: playerType): playerType;
  23.     begin
  24.         if p = Pwhite then begin
  25.             Opposite := Pblack
  26.         end
  27.         else begin
  28.             Opposite := Pwhite;
  29.         end; { if }
  30.     end; { Opposite }
  31.  
  32.     function BaseRow (p: playerType): boardYNdx;
  33.     begin
  34.         case p of
  35.             Pblack: 
  36.                 BaseRow := 0;
  37.             Pwhite: 
  38.                 BaseRow := kBoardYMax;
  39.         end; { case }
  40.     end; { BaseRow }
  41.  
  42.     function PawnBaseRow (p: playerType): boardYNdx;
  43.     begin
  44.         case p of
  45.             Pblack: 
  46.                 PawnBaseRow := 1;
  47.             Pwhite: 
  48.                 PawnBaseRow := kBoardYMax - 1;
  49.         end; { case }
  50.     end; { PawnBaseRow }
  51.  
  52.     function Pawn_dy (p: playerType): integer;
  53.     begin
  54.         case p of
  55.             Pblack: 
  56.                 Pawn_dy := 1;
  57.             Pwhite: 
  58.                 Pawn_dy := -1;
  59.         end; { case }
  60.     end; { Pawn_dy }
  61.  
  62.     function PieceToPlayer (p: pieceType): playerType;
  63.     begin
  64.         case p of
  65.             OpawnB..OqueenB: 
  66.                 PieceToPlayer := Pblack;
  67.             OpawnW..OqueenW: 
  68.                 PieceToPlayer := Pwhite;
  69.             otherwise
  70.                 Failure('PieceToPlayer with empty');
  71.         end; { case }
  72.     end; { PieceToPlayer }
  73.  
  74.     function PieceInMyTeam (player: playerType; p: pieceType): boolean;
  75.     begin
  76.         case player of
  77.             Pblack: 
  78.                 PieceInMyTeam := (p in [OpawnB..OqueenB]);
  79.             Pwhite: 
  80.                 PieceInMyTeam := (p in [OpawnW..OqueenW]);
  81.         end; { case }
  82.     end; { PieceInMyTeam }
  83.  
  84.     function PlayerToKing (p: playerType): pieceType;
  85.     begin
  86.         case p of
  87.             Pblack: 
  88.                 PlayerToKing := OkingB;
  89.             Pwhite: 
  90.                 PlayerToKing := OkingW;
  91.         end; { case }
  92.     end; { PlayerToKing }
  93.  
  94.     function PlayerPiece (p: playerType; piece: pieceType): pieceType;
  95.     begin
  96.         case piece of
  97.             OpawnW..OqueenW: 
  98.                 case p of
  99.                     Pblack: 
  100.                         PlayerPiece := pieceType(ord(piece) - ord(OpawnW) + ord(OpawnB));
  101.                     Pwhite: 
  102.                         PlayerPiece := piece;
  103.                 end; { case }
  104.             OpawnB..OqueenB: 
  105.                 case p of
  106.                     Pblack: 
  107.                         PlayerPiece := piece;
  108.                     Pwhite: 
  109.                         PlayerPiece := pieceType(ord(piece) - ord(OpawnB) + ord(OpawnW));
  110.                 end; { case }
  111.             Oempty: 
  112.                 PlayerPiece := piece;
  113.         end; { case }
  114.     end; { PlayerPiece }
  115.  
  116. end. { ChessSubs }